//移动零 题目链接  https://leetcode.cn/problems/move-zeroes/description/
class Solution {
    public void duplicateZeros(int[] arr) {
        //cur指向的是还没有处理的数
        int cur=0;
        int dest=arr.length-1;
        int flag=0;
        //找最后一个复写的下标
        //i指向异地数组放的下标，最后下标
        int i=-1;
        while(i<arr.length){
            if(i==arr.length-1) break;
            if(arr[cur]!=0){
                i++;
                if(i==arr.length-1) break;
                cur++;
            }else{
                i++;
                if(i==arr.length-1) {
                    flag=1;
                    break;
                }
                i++;
                if(i==arr.length-1) break;
                cur++;
            }
        }
        while(cur>=0){
            if(arr[cur]!=0){
                arr[dest]=arr[cur];
                cur--;
                dest--;
            }else{
                if(flag==1){
                    arr[dest]=0;
                    dest--;
                    cur--;
                    flag=0;
                }else{
                    arr[dest]=0;
                    dest--;
                    arr[dest]=0;
                    dest--;
                    cur--;
                }
            }
        }
    }



}
